#include <QApplication>
#include <QMessageBox>
#include "mainwindow.h"
#include "util/database/databasemanager.h"

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);

    // 1. 获取数据库管理器实例
    DatabaseManager* dbManager = DatabaseManager::getInstance();

    // 2. 打开数据库连接
    if (!dbManager->openDatabase("warehouse_management.db")) {
        QMessageBox::critical(nullptr, "致命错误",
                            "无法打开数据库连接，程序将退出！\n请检查数据库文件是否可写。");
        return -1;
    }

    // 3. 关键步骤：检查并创建所有必要的表（项目执行时自动执行）
    QString initError;
    if (!dbManager->checkAndCreateAllTables(&initError)) {
        // 表初始化失败时的处理
        QMessageBox::critical(nullptr, "表结构初始化失败",
                            QString("数据库表创建失败：\n%1\n程序可能无法正常运行。").arg(initError));
        // 此处可根据需求选择退出程序或继续运行（风险较高）
        return -1;
    }

    // 4. 表初始化成功，启动主窗口
    MainWindow w;
    w.show();

    return a.exec();
}
